(function ($, document, window) {
    $.fn.slides = function (parameter) {
        var defaults = {
            'slidesObj': '',//滚动对象
            'prev': '.prev',//上一个按扭
            'next': '.next',//下一个按钮
            'speed': 1000,//滚动速度
            'pageSize': 1,//每次滚动数量
            'pageNum': 1,//默认显示个数。如果总数小于当前默认值。将不滚动
            'type': 'left',//left=向左滚动 top=向上滚动 fadein=谈入显示，auto=定时切换
            'Slides': 'li',//滚动对象
            'auto': true,//true自动滚动，false 不自动滚动
            'showtype': 1,//1左右有箭头下方有圆点，2显示标题 3左右有箭头
            'settime':5000,
            'imgObj':"",
            'imgWidth': ""
        };
        var self = this,
            parameter = $.extend({}, defaults, parameter);
        // if (parameter.type == "left") {
            var $slides = $(parameter.slidesObj),
                $slidesLenght = $(parameter.slidesObj).find(parameter.Slides).length,
                current = 1,
                totalPage = Math.ceil($slidesLenght / parameter.pageNum),//获取当前总页数
                // w = 414,
                w = Number((parameter.imgWidth)),
                $next = $(parameter.slidesObj).parents().find(parameter.next),//下一个
                $prev = $(parameter.slidesObj).parents().find(parameter.prev);//上一个
            if ($slidesLenght < parameter.pageNum) {
                $next.hide();
                $prev.hide();
            };
        // }
        if (parameter.type == "left" && parameter.showtype == 1) {//为向左滚动带小圆点
            if (parameter.pageSize == 1) {
                var first = $slides.find(parameter.Slides + ':first').clone(),
                    last = $slides.find(parameter.Slides + ':last').clone();
                $slides
                    .prepend(last)
                    .css({left: -w})
                    .append(first);
            }
            $next.on('click', function () {//点击下一个按钮

                speedTo(parameter, "next", 1);
            });
            $prev.on('click', function () {//点击上一个按钮
                speedTo(parameter, "prev", 1);
            });
            $slides.parent().find("li").on('click', function () {
                current = $(this).index();
                speedTo(parameter, "next", 1);
            });
            //鼠标经过出现左右箭头
            function scroll(){//设置滚动方法
                speedTo(parameter, "next", 1);
            }
            var timeSlide=setInterval(scroll,parameter.settime);
            $slides.parent().on("mouseover",function(){
                clearInterval(timeSlide);
                $(this).find("span").removeClass("hide");
            }).on("mouseleave",function(){
                timeSlide=setInterval(scroll,parameter.settime);
                $(this).find("span").addClass("hide");
            });
        };
        if (parameter.type == "left" && parameter.showtype == 3) {//为向左滚动不带圆点
            if (parameter.pageSize == 1) {
                var first = $slides.find(parameter.Slides + ':first').clone(),
                    last = $slides.find(parameter.Slides + ':last').clone();
                $slides
                    .prepend(last)
                    .css({left: -w})
                    .append(first);
            }
            $next.on('click', function () {//点击下一个按钮
                speedTo(parameter, "next", 3);
            });
            $prev.on('click', function () {//点击上一个按钮
                speedTo(parameter, "prev", 3);
            });
            //鼠标经过出现左右箭头
            $slides.parent().on("mouseover",function(){
                $(this).find("span").removeClass("hide");
            }).on("mouseleave",function(){
                $(this).find("span").addClass("hide");
            })
        };
        if(parameter.showtype==3){//带标题的图片滚动
            var $slides = this;
            var $imgobj=$(parameter.imgObj).find("ul li"),
                $next = $(parameter.imgObj).find(parameter.next),//下一个
                $prev = $(parameter.imgObj).find(parameter.prev);//上一个

            if($imgobj.length <2){
                $next.hide();
                $prev.hide();
            }

            var i =0;
            $slides.on("mouseover",function(){
                i=$(this).index();
                imgScrollObj(i);

            });

            function scrollImg() {
                if(i<$imgobj.length-1){
                    i+=1;
                    imgScrollObj(i);
                } else {
                    i=0;
                    imgScrollObj(i);
                }
            }
            $next.on('click', function () {//点击下一个按钮
                scrollImg();
            });

            $prev.on('click', function() {
                if(i==0){
                    i=$imgobj.length-1;
                    imgScrollObj(i);
                } else {
                    i-=1;
                    imgScrollObj(i);
                }
            });

            var autoScrollImg = setInterval(scrollImg,parameter.settime);
            $slides.parent().on("mouseover",function(){
                clearInterval(autoScrollImg);
                $(this).find("span").removeClass("hide");
            }).on("mouseleave",function(){
                autoScrollImg=setInterval(scroll,parameter.settime);
                $(this).find("span").addClass("hide");
            });

        }


        function  imgScrollObj(num) {
            $imgobj.stop().animate({opacity:0},500,function(){
                $(this).css({"z-index":1});
            }).eq(i).stop().animate({opacity:1},500,function(){
                $(this).css({"z-index":2});
            });

            $slides.removeClass("active");
            $slides.eq(i).addClass("active");
        };
        function speedTo(parameter, obj, showtype) {
            if (!$slides.is(":animated")) {//如果动画在运行则为flase
                switch (obj) {//判断点击的按钮状态
                    case "next":
                        current++;
                        break;
                    case "prev":
                        current--;
                        break;
                }
                if (showtype == 1) {
                    var $obj= $slides.parent().find(".switch li");
                    $obj.removeClass("active").eq(current - 1).addClass("active");
                    if (current > totalPage) {
                        $obj.removeClass("active").eq(0).addClass("active");
                    };
                    if (current < 1) {
                        $obj.removeClass("active").eq(totalPage - 1).addClass("active");
                    }
                    $slides.animate({left: -(w * current)}, parameter.speed, function () {
                        if (current > totalPage) {//如果当前页大于总页数 scroll 跳转到第一页。
                            $slides.css({left: -w});
                            current = 1;
                        }
                        if (current < 1) {//如果当前面小于1scroll 跳转到最后一页
                            $slides.css({left: -(w * totalPage)});
                            current = totalPage;
                        }
                    })
                };

            };
        }
    }
})(jQuery, document, window);


